/**
 * 在启动应用前运行类型检查和代码质量检查的脚本
 */
const { execSync } = require('child_process');
const path = require('path');

// 执行命令并返回输出结果
function runCommand(command) {
  try {
    return execSync(command, {
      encoding: 'utf8',
      stdio: 'inherit',
    });
  } catch (error) {
    console.error(`命令执行失败: ${command}`);
    process.exit(1);
  }
}

// 检查是否为生产环境
const isProduction = process.env.NODE_ENV === 'production';

console.log('👀 正在运行代码检查...');

// 在开发环境中运行类型检查和代码质量检查
if (!isProduction) {
  console.log('⚙️ 运行 ESLint...');
  runCommand('npm run lint:check');

  console.log('⚙️ 运行类型检查...');
  runCommand('npm run type-check');
}

// 启动应用
const startCommand = isProduction ? 'node dist/main.js' : 'nest start --watch';

console.log(`🚀 启动应用: ${startCommand}`);
runCommand(startCommand);
